#include <iostream>

using namespace std;

int n;
const int N = 10;
int arr[N];
bool st[N];
void dfs(int x)
{
    if (x > n)
    {
        for (int i = 1; i <= n; i++)
        {
            cout << "    " << arr[i];
        }
         cout << endl;
         return; // 返回上一层函数
    }
    // 从1到n挨个尝试
    for (int i = 1; i <= n; i++)
    {
         if (!st[i]) // 如果此时的i还是false，说明之前没有选它，那么就进入分支，将它标记为true
        {
            st[i] = true;
            arr[x] = i;
            dfs(x + 1);
            st[i] = false; // 恢复原样
            arr[x] = 0;
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n;
    dfs(1);
    return 0;
}